#pragma once

#include <vector>
#include <memory>

#include "platform.h"
#include "ProcessModule.h"
#include "MemoryReader.h"

class Process
{
public:
	virtual std::vector<ProcessModule>& modules() = 0;
	virtual const process_handle native() const = 0;
	virtual const std::string& name() const = 0;
	virtual MemoryReader& reader() = 0;
	virtual const ProcessModule module(const std::string& name);
};

typedef std::shared_ptr<Process> ProcessPtr;